<?php
/**
 * Файл с основными настройками и константами
 * 
 * Тут мы храним настройки базы данных
 * @author Anton Zavidov
 * @package myLiveShop
 */

/**
 * Правильные слеши
 *
 */
define ('DS', DIRECTORY_SEPARATOR);
define ('FS', '/');
/**
 * точка
 *
 */
define ('DOT', '.');
/**
 * Путь к файлам
 *
 */
define ('FILE_PATH', realpath(dirname(__FILE__) . DS ) . DS);
/**
 * Настройки
 *
 */
class Config extends Base{
	/**
	 * Файл с настройками
	 *
	 * @var string
	 */
	private static $config_file='../config.ini';
	/**
	 * Хранимые настройки
	 *
	 * @var array
	 */
	private static $params=null;
	/**
	 * Конструктор
	 *
	 */
	public function __construct(){
		$this->parse();
		parent::__construct(__CLASS__);
	}
	/**
	 * Установка файла конфигурации
	 *
	 * @param string $name путь к файлу
	 */
	public static function setFile($name){
		self::$config_file=$name;
	}
	/**
	 * Выбираем настройки из ini файла
	 *
	 */
	private static function parse(){
		//если сбой конфигурации то не пытаемся снова загрузить файл
		if(self::$params===false)return;
		//проверяем существование файла
		if(!file_exists(FILE_PATH.self::$config_file)){
			//устанавливаем сбой конфигурации
			self::$params=false;
			new CoreExeption("Не найден файл конфигурации ".FILE_PATH.self::$config_file,E_ERROR,__FILE__,__LINE__);
			return;
		}
		self::$params=array();
		//превращаем двумерный массив настроек в одномерный
		foreach (parse_ini_file(FILE_PATH.self::$config_file, true) as $key=>$params) {
			foreach ($params as $k=>$value){
				self::$params[$key.'_'.$k]=$value;
			}
		}
		//добавляем некоторые свои переменные
		self::$params['path_file']=$_SERVER['DOCUMENT_ROOT'];
	}
	/**
	 * Получаем значение настройки
	 *
	 * @param string $name имя настройки
	 * @return mixed
	 */
	public static function _($name){
		//если настройки не заданы то пытаемся из задать
		if(!self::$params)self::parse();
		//если настройка найдена
		if(isset(self::$params[$name]))return self::$params[$name];
		//иначе выдаём предупреждение
		new CoreExeption("Попытка обратится к несуществующей переменной конфигурации ".$name,E_WARNING,__FILE__,__LINE__);
	}
}
